package cn.tedu.medicalpath.attendance.controller;

import cn.tedu.medicalpath.attendance.pojo.dto.AttendanceQuery;
import cn.tedu.medicalpath.attendance.pojo.dto.AttendanceSaveParam;
import cn.tedu.medicalpath.attendance.pojo.vo.AttendanceVO;
import cn.tedu.medicalpath.attendance.service.AttendanceService;
import cn.tedu.medicalpath.base.response.JsonResult;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("v1/attendance")
public class AttendanceController {
    @Autowired
    AttendanceService attendanceService;

    /**
     * 根据医生id 患者姓名 身份证号 手机号 就诊状态 就诊类型 查询就诊记录表关联患者表信息
     * @param attendanceQuery
     * @return
     */
    @ApiModelProperty("查询患者信息")
    @GetMapping("select")
    public JsonResult select(AttendanceQuery attendanceQuery){
        log.debug("开始处理【查询患者信息】的请求，参数：{}",attendanceQuery);
        List<AttendanceVO> list = attendanceService.select(attendanceQuery);
        log.debug("查询到{}条数据",list.size());
        return JsonResult.success(list);
    }



    @ApiModelProperty("更新就诊状态和备注")
    @PostMapping("update")
    public JsonResult updateById(@RequestBody AttendanceSaveParam attendanceSaveParam){
        log.debug("开始处理【更新就诊记录】的请求，参数：{}",attendanceSaveParam);
        attendanceService.updateById(attendanceSaveParam);
        return JsonResult.success();
    }

    /**
     * 根据患者id更新就诊记录状态
     * @param id
     * @return
     */
    @ApiModelProperty("根据id更新就诊记录状态")
    @PostMapping("updateStatusById/{id}")
    public JsonResult updateStatusByPatientId(@PathVariable Long id){
        log.debug("开始处理【更新就诊状态】的请求，参数：{}",id);
        attendanceService.updateStatusById(id);
        return JsonResult.success();
    }

    @ApiModelProperty("插入就诊记录")
    @PostMapping("insert")
    public JsonResult insert(AttendanceSaveParam attendanceSaveParam){
        log.debug("开始处理【插入就诊记录】的请求，参数：{}",attendanceSaveParam);
        Long id = attendanceService.insert(attendanceSaveParam);
        return JsonResult.success(id);//前端挂号业务需要返回就诊单id，这里补充
    }

}
